<?php
/**
 * Created by PhpStorm.
 * @description:
 * @time:
 * @Author: yfl
 * @QQ 554665488
 * Date: 2018-5-26
 * Time: 0:39
 */
//创建异步tcp客户端
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);

//注册链接成功回调

$client->on('connect', function ($cli) {
    if($cli->errCode==0){
        echo '链接成功'.PHP_EOL;
//        var_dump($cli);
    }else{
        echo '链接失败';
    }

    $cli->send('异步链接成功后发送数据' . PHP_EOL);

});
// 注册数据接收回调
$client->on('receive', function ($cli, $data) {
    echo '接收服务器数据' . $data . "\n";
});
//注册链接失败回调
$client->on('error', function ($cli) {
    echo 'connect failed' . "\n";
});
// 注册链接关闭回调
$client->on('close', function ($cli) {
    echo 'connect close';
});
$client->connect('127.0.0.1', 9501, 0.5);
echo '在异步任务执行完成之前先执行'.PHP_EOL;
//异步Tcp客户端和同步Tcp客户端不同，一步客户端是非阻塞的，用于编写高并发的程序。swoole 提供的redis-async  mysql-async 都是基于异步swoole_client客户端开发的

//异步客户端必须要设置以上四个回调 connect receive error close 分别在链接成功 收到数据 链接失败 链接关闭的时候触发回调

//调用$client->connect() 方法发起连接的时候会立即返回。不存在等待。当对应的io完成后 swoole 底层会自动调用设置好的回调事件

//异步客户端client//只可以用于cli环境